<script type="text/javascript">

    /*
     * Tocbot.min.js version 2.1.4
     */

    !function (e) {
        function t(o) {
            if (n[o]) return n[o].exports;
            var i = n[o] = {exports: {}, id: o, loaded: !1};
            return e[o].call(i.exports, i, i.exports, t), i.loaded = !0, i.exports
        }

        var n = {};
        return t.m = e, t.c = n, t.p = "", t(0)
    }([/*!*************************!*\
   !*** ./src/js/index.js ***!
   \*************************/
        function (e, t, n) {
            var o, i, r;
            (function (l) {
                !function (n, l) {
                    i = [], o = l(n), r = "function" == typeof o ? o.apply(t, i) : o, !(void 0 !== r && (e.exports = r))
                }("undefined" != typeof l ? l : this.window || this.global, function (e) {
                    "use strict";

                    function t() {
                        for (var e = {}, t = 0; t < arguments.length; t++) {
                            var n = arguments[t];
                            for (var o in n) h.call(n, o) && (e[o] = n[o])
                        }
                        return e
                    }

                    function o(e, t, n) {
                        t || (t = 250);
                        var o, i;
                        return function () {
                            var r = n || this, l = +new Date, s = arguments;
                            o && l < o + t ? (clearTimeout(i), i = setTimeout(function () {
                                o = l, e.apply(r, s)
                            }, t)) : (o = l, e.apply(r, s))
                        }
                    }

                    var i, r, l, s = n(/*! smooth-scroll */1), c = n(/*! ./default-options.js */2), a = {}, u = {},
                        d = n(/*! ./build-html.js */3), f = n(/*! ./parse-content.js */4),
                        m = (e.document, document.body, !!e.document.querySelector && !!e.addEventListener),
                        h = Object.prototype.hasOwnProperty;
                    return u.destroy = function () {
                        try {
                            document.querySelector(a.tocSelector).innerHTML = ""
                        } catch (e) {
                            console.warn("Element not found: " + a.tocSelector)
                        }
                        document.removeEventListener("scroll", this._scrollListener, !1), document.removeEventListener("resize", this._scrollListener, !1), i && document.removeEventListener("click", this._clickListener, !1), s && s.destroy()
                    }, u.init = function (e) {
                        if (m && (a = t(c, e || {}), this.options = a, this.state = {}, i = d(a), r = f(a), this._buildHtml = i, this._parseContent = r, u.destroy(), l = r.selectHeadings(a.contentSelector, a.headingSelector), null !== l)) {
                            var n = r.nestHeadingsArray(l), h = n.nest;
                            return i.render(a.tocSelector, h), this._scrollListener = o(function () {
                                i.updateToc(l)
                            }, a.throttleTimeout), this._scrollListener(), document.addEventListener("scroll", this._scrollListener, !1), document.addEventListener("resize", this._scrollListener, !1), this._clickListener = o(function (e) {
                                i.disableTocAnimation(e), i.updateToc(l)
                            }, a.throttleTimeout), document.addEventListener("click", this._clickListener, !1), s && (this.smoothScroll = s.init(t(a.smoothScrollOptions, {callback: i.enableTocAnimation}))), this
                        }
                    }, u.refresh = function (e) {
                        u.destroy(), u.init(e || this.options)
                    }, e.tocbot = u, u
                })
            }).call(t, function () {
                return this
            }())
        },/*!******************************************************!*\
   !*** ./~/smooth-scroll/dist/js/smooth-scroll.min.js ***!
   \******************************************************/
        function (e, t, n) {
            var o, i, r;
            (function (n) {/*! smooth-scroll v10.0.1 | (c) 2016 Chris Ferdinandi | MIT License | http://github.com/cferdinandi/smooth-scroll */
                !function (n, l) {
                    i = [], o = l(n), r = "function" == typeof o ? o.apply(t, i) : o, !(void 0 !== r && (e.exports = r))
                }("undefined" != typeof n ? n : this.window || this.global, function (e) {
                    "use strict";
                    var t, n, o, i, r, l, s, c = {}, a = "querySelector" in document && "addEventListener" in e, u = {
                        selector: "[data-scroll]",
                        selectorHeader: null,
                        speed: 500,
                        easing: "easeInOutCubic",
                        offset: 0,
                        callback: function () {
                        }
                    }, d = function () {
                        var e = {}, t = !1, n = 0, o = arguments.length;
                        "[object Boolean]" === Object.prototype.toString.call(arguments[0]) && (t = arguments[0], n++);
                        for (var i = function (n) {
                            for (var o in n) Object.prototype.hasOwnProperty.call(n, o) && (t && "[object Object]" === Object.prototype.toString.call(n[o]) ? e[o] = d(!0, e[o], n[o]) : e[o] = n[o])
                        }; o > n; n++) {
                            var r = arguments[n];
                            i(r)
                        }
                        return e
                    }, f = function (e) {
                        return Math.max(e.scrollHeight, e.offsetHeight, e.clientHeight)
                    }, m = function (e, t) {
                        var n, o, i = t.charAt(0), r = "classList" in document.documentElement;
                        for ("[" === i && (t = t.substr(1, t.length - 2), n = t.split("="), n.length > 1 && (o = !0, n[1] = n[1].replace(/"/g, "").replace(/'/g, ""))); e && e !== document && 1 === e.nodeType; e = e.parentNode) {
                            if ("." === i) if (r) {
                                if (e.classList.contains(t.substr(1))) return e
                            } else if (new RegExp("(^|\\s)" + t.substr(1) + "(\\s|$)").test(e.className)) return e;
                            if ("#" === i && e.id === t.substr(1)) return e;
                            if ("[" === i && e.hasAttribute(n[0])) {
                                if (!o) return e;
                                if (e.getAttribute(n[0]) === n[1]) return e
                            }
                            if (e.tagName.toLowerCase() === t) return e
                        }
                        return null
                    }, h = function (e) {
                        "#" === e.charAt(0) && (e = e.substr(1));
                        for (var t, n = String(e), o = n.length, i = -1, r = "", l = n.charCodeAt(0); ++i < o;) {
                            if (t = n.charCodeAt(i), 0 === t) throw new InvalidCharacterError("Invalid character: the input contains U+0000.");
                            r += t >= 1 && 31 >= t || 127 == t || 0 === i && t >= 48 && 57 >= t || 1 === i && t >= 48 && 57 >= t && 45 === l ? "\\" + t.toString(16) + " " : t >= 128 || 45 === t || 95 === t || t >= 48 && 57 >= t || t >= 65 && 90 >= t || t >= 97 && 122 >= t ? n.charAt(i) : "\\" + n.charAt(i)
                        }
                        return "#" + r
                    }, p = function (e, t) {
                        var n;
                        return "easeInQuad" === e && (n = t * t), "easeOutQuad" === e && (n = t * (2 - t)), "easeInOutQuad" === e && (n = .5 > t ? 2 * t * t : -1 + (4 - 2 * t) * t), "easeInCubic" === e && (n = t * t * t), "easeOutCubic" === e && (n = --t * t * t + 1), "easeInOutCubic" === e && (n = .5 > t ? 4 * t * t * t : (t - 1) * (2 * t - 2) * (2 * t - 2) + 1), "easeInQuart" === e && (n = t * t * t * t), "easeOutQuart" === e && (n = 1 - --t * t * t * t), "easeInOutQuart" === e && (n = .5 > t ? 8 * t * t * t * t : 1 - 8 * --t * t * t * t), "easeInQuint" === e && (n = t * t * t * t * t), "easeOutQuint" === e && (n = 1 + --t * t * t * t * t), "easeInOutQuint" === e && (n = .5 > t ? 16 * t * t * t * t * t : 1 + 16 * --t * t * t * t * t), n || t
                    }, v = function (e, t, n) {
                        var o = 0;
                        if (e.offsetParent) do o += e.offsetTop, e = e.offsetParent; while (e);
                        return o = Math.max(o - t - n, 0), Math.min(o, b() - g())
                    }, g = function () {
                        return Math.max(document.documentElement.clientHeight, e.innerHeight || 0)
                    }, b = function () {
                        return Math.max(document.body.scrollHeight, document.documentElement.scrollHeight, document.body.offsetHeight, document.documentElement.offsetHeight, document.body.clientHeight, document.documentElement.clientHeight)
                    }, C = function (e) {
                        return e && "object" == typeof JSON && "function" == typeof JSON.parse ? JSON.parse(e) : {}
                    }, S = function (e) {
                        return e ? f(e) + e.offsetTop : 0
                    }, y = function (t, n, o) {
                        o || (t.focus(), document.activeElement.id !== t.id && (t.setAttribute("tabindex", "-1"), t.focus(), t.style.outline = "none"), e.scrollTo(0, n))
                    };
                    c.animateScroll = function (n, o, l) {
                        var c = C(o ? o.getAttribute("data-options") : null), a = d(t || u, l || {}, c),
                            f = "[object Number]" === Object.prototype.toString.call(n), m = f || !n.tagName ? null : n;
                        if (f || m) {
                            var h = e.pageYOffset;
                            a.selectorHeader && !i && (i = document.querySelector(a.selectorHeader)), r || (r = S(i));
                            var g, x, N = f ? n : v(m, r, parseInt(a.offset, 10)), L = N - h, O = b(), E = 0,
                                A = function (t, i, r) {
                                    var l = e.pageYOffset;
                                    (t == i || l == i || e.innerHeight + l >= O) && (clearInterval(r), y(n, i, f), a.callback(n, o))
                                }, H = function () {
                                    E += 16, g = E / parseInt(a.speed, 10), g = g > 1 ? 1 : g, x = h + L * p(a.easing, g), e.scrollTo(0, Math.floor(x)), A(x, N, s)
                                }, T = function () {
                                    clearInterval(s), s = setInterval(H, 16)
                                };
                            0 === e.pageYOffset && e.scrollTo(0, 0), T()
                        }
                    };
                    var x = function (t) {
                        e.location.hash, n && (n.id = n.getAttribute("data-scroll-id"), c.animateScroll(n, o), n = null, o = null)
                    }, N = function (i) {
                        if (0 === i.button && !i.metaKey && !i.ctrlKey && (o = m(i.target, t.selector), o && "a" === o.tagName.toLowerCase() && o.hostname === e.location.hostname && o.pathname === e.location.pathname && /#/.test(o.href))) {
                            var r = h(o.hash);
                            if ("#" === r) {
                                i.preventDefault(), n = document.body;
                                var l = n.id ? n.id : "smooth-scroll-top";
                                return n.setAttribute("data-scroll-id", l), n.id = "", void (e.location.hash.substring(1) === l ? x() : e.location.hash = l)
                            }
                            n = document.querySelector(r), n && (n.setAttribute("data-scroll-id", n.id), n.id = "", o.hash === e.location.hash && (i.preventDefault(), x()))
                        }
                    }, L = function (e) {
                        l || (l = setTimeout(function () {
                            l = null, r = S(i)
                        }, 66))
                    };
                    return c.destroy = function () {
                        t && (document.removeEventListener("click", N, !1), e.removeEventListener("resize", L, !1), t = null, n = null, o = null, i = null, r = null, l = null, s = null)
                    }, c.init = function (n) {
                        a && (c.destroy(), t = d(u, n || {}), i = t.selectorHeader ? document.querySelector(t.selectorHeader) : null, r = S(i), document.addEventListener("click", N, !1), e.addEventListener("hashchange", x, !1), i && e.addEventListener("resize", L, !1))
                    }, c
                })
            }).call(t, function () {
                return this
            }())
        },/*!***********************************!*\
   !*** ./src/js/default-options.js ***!
   \***********************************/
        function (e, t) {
            e.exports = {
                tocSelector: ".js-toc",
                contentSelector: ".js-toc-content",
                headingSelector: "h1, h2, h3",
                ignoreSelector: ".js-toc-ignore",
                linkClass: "toc-link",
                extraLinkClasses: "",
                activeLinkClass: "is-active-link",
                listClass: "toc-list",
                extraListClasses: "",
                isCollapsedClass: "is-collapsed",
                collapsibleClass: "is-collapsible",
                listItemClass: "toc-list-item",
                collapseDepth: 0,
                smoothScrollOptions: {easing: "easeInOutCubic", offset: 0, speed: 300, updateURL: !0},
                headingsOffset: 0,
                throttleTimeout: 50,
                positionFixedSelector: null,
                positionFixedClass: "is-position-fixed",
                fixedSidebarOffset: "auto",
                includeHtml: !1
            }
        },/*!******************************!*\
   !*** ./src/js/build-html.js ***!
   \******************************/
        function (e, t) {
            e.exports = function (e) {
                function t(e, n) {
                    var r = n.appendChild(o(e));
                    if (e.children.length) {
                        var l = i(e.isCollapsed);
                        e.children.forEach(function (e) {
                            t(e, l)
                        }), r.appendChild(l)
                    }
                }

                function n(e, n) {
                    var o = !1, r = i(o);
                    n.forEach(function (e) {
                        t(e, r)
                    });
                    var l = document.querySelector(e);
                    if (null !== l) return l.firstChild && l.removeChild(l.firstChild), l.appendChild(r)
                }

                function o(t) {
                    var n = document.createElement("li"), o = document.createElement("a");
                    return e.listItemClass && n.setAttribute("class", e.listItemClass), e.includeHtml && t.childNodes.length ? u.call(t.childNodes, function (e) {
                        o.appendChild(e.cloneNode(!0))
                    }) : o.textContent = t.textContent, o.setAttribute("data-scroll", ""), o.setAttribute("href", "#" + t.id), o.setAttribute("class", e.linkClass + h + "node-name--" + t.nodeName + h + e.extraLinkClasses), n.appendChild(o), n
                }

                function i(t) {
                    var n = document.createElement("ul"), o = e.listClass + h + e.extraListClasses;
                    return t && (o += h + e.collapsibleClass, o += h + e.isCollapsedClass), n.setAttribute("class", o), n
                }

                function r() {
                    var t = document.documentElement.scrollTop || f.scrollTop,
                        n = document.querySelector(e.positionFixedSelector);
                    "auto" === e.fixedSidebarOffset && (e.fixedSidebarOffset = document.querySelector(e.tocSelector).offsetTop), t > e.fixedSidebarOffset ? n.className.indexOf(e.positionFixedClass) === -1 && (n.className += h + e.positionFixedClass) : n.className = n.className.split(h + e.positionFixedClass).join("")
                }

                function l(t) {
                    var n = document.documentElement.scrollTop || f.scrollTop;
                    e.positionFixedSelector && r();
                    var o, i = t;
                    if (m && null !== document.querySelector(e.tocSelector) && i.length > 0) {
                        d.call(i, function (t, r) {
                            if (t.offsetTop > n + e.headingsOffset) {
                                var l = 0 === r ? r : r - 1;
                                return o = i[l], !0
                            }
                            if (r === i.length - 1) return o = i[i.length - 1], !0
                        });
                        var l = document.querySelector(e.tocSelector).querySelectorAll("." + e.linkClass);
                        u.call(l, function (t) {
                            t.className = t.className.split(h + e.activeLinkClass).join("")
                        });
                        var c = document.querySelector(e.tocSelector).querySelector("." + e.linkClass + ".node-name--" + o.nodeName + '[href="#' + o.id + '"]');
                        c.className += h + e.activeLinkClass;
                        var a = document.querySelector(e.tocSelector).querySelectorAll("." + e.listClass + "." + e.collapsibleClass);
                        u.call(a, function (t) {
                            var n = h + e.isCollapsedClass;
                            t.className.indexOf(n) === -1 && (t.className += h + e.isCollapsedClass)
                        }), c.nextSibling && (c.nextSibling.className = c.nextSibling.className.split(h + e.isCollapsedClass).join("")), s(c.parentNode.parentNode)
                    }
                }

                function s(t) {
                    return t.className.indexOf(e.collapsibleClass) !== -1 ? (t.className = t.className.split(h + e.isCollapsedClass).join(""), s(t.parentNode.parentNode)) : t
                }

                function c(t) {
                    var n = t.target || t.srcElement;
                    n.className.indexOf(e.linkClass) !== -1 && (m = !1)
                }

                function a() {
                    m = !0
                }

                var u = [].forEach, d = [].some, f = document.body, m = !0, h = " ";
                return {enableTocAnimation: a, disableTocAnimation: c, render: n, updateToc: l}
            }
        },/*!*********************************!*\
   !*** ./src/js/parse-content.js ***!
   \*********************************/
        function (e, t) {
            e.exports = function (e) {
                function t(e) {
                    return e[e.length - 1]
                }

                function n(e) {
                    return +e.nodeName.split("H").join("")
                }

                function o(t) {
                    var o = {
                        id: t.id,
                        children: [],
                        nodeName: t.nodeName,
                        headingLevel: n(t),
                        textContent: t.textContent.trim()
                    };
                    return e.includeHtml && (o.childNodes = t.childNodes), o
                }

                function i(i, r) {
                    for (var l = o(i), s = n(i), c = r, a = t(c), u = a ? a.headingLevel : 0, d = s - u; d > 0;) a = t(c), a && void 0 !== a.children && (c = a.children), d--;
                    return s >= e.collapseDepth && (l.isCollapsed = !0), c.push(l), c
                }

                function r(t, n) {
                    var o = n;
                    e.ignoreSelector && (o = n.split(",").map(function (t) {
                        return t.trim() + ":not(" + e.ignoreSelector + ")"
                    }));
                    try {
                        return document.querySelector(t).querySelectorAll(o)
                    } catch (i) {
                        return console.warn("Element not found: " + t), null
                    }
                }

                function l(e) {
                    return s.call(e, function (e, t) {
                        var n = o(t);
                        return i(n, e.nest), e
                    }, {nest: []})
                }

                var s = [].reduce;
                return {nestHeadingsArray: l, selectHeadings: r}
            }
        }]);
    //# sourceMappingURL=tocbot.min.js.map

</script>

<script type="text/javascript">

    var generateToc = function () {
        var readyState = document.readyState;
        if (readyState === 'interactive' || readyState == 'complete') {

            var headerSize = 140;

            var tocParentNode = document.createElement("div");
            tocParentNode.setAttribute("id", "toc-parent");

            var generatedTocNode = document.createElement("div");
            generatedTocNode.setAttribute("id", "generated-toc");
            tocParentNode.appendChild(generatedTocNode);

            var contentNode = document.getElementById("content");
            contentNode.parentNode.insertBefore(tocParentNode, contentNode);

            var clearNode = document.createElement("div");
            clearNode.setAttribute("class", "clear");
            contentNode.parentNode.appendChild(clearNode);

            tocbot.init({
                tocSelector: '#generated-toc',
                contentSelector: '#content',
                headingSelector: 'h2, h3, h4, h5',
                headingsOffset: headerSize,
                smoothScrollOptions: {
                    easing: 'easeInOutCubic',
                    offset: headerSize,
                    speed: 300, // animation duration.
                    updateURL: true
                },
                collapseDepth: 0
            });

        } else {
            window.setTimeout(function () {
                generateToc();
            }, 50);
        }

    }
    generateToc();

</script>

<div class="choose-version">
    <select id="choose-version" onchange="chooseVersion(this.value)">
        <option value="6.8.0">6.8.0</option>
        <option value="7.1.0">7.1.0</option>
    </select>
</div>

<script type="text/javascript">
    var initVersion = function () {
        var list = window.location.pathname.split('/');
        document.getElementById('choose-version').value = list[list.length - 2];
    };
    initVersion();

    var chooseVersion = function (obj) {
        window.location.href = '../' + obj;
    }
</script>